﻿<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Restrito_Template extends Controller_Template {

	public $template = 'restrito';

	public $usuario;
	
	public function before()
	{
		parent::before();
		
		if (Session::instance()->get('usuario') === NULL)
		{
			Flash::message('error', 'Você permaneceu muito tempo inativo. Por favor, conecte novamente!');
			$this->request->redirect('welcome/index');
			exit();
		}
		
		$this->usuario = unserialize(Session::instance()->get('usuario'));
		
		$this->uri_restrito();
		
		$this->template->usuario = $this->usuario;
	}
	
	protected function uri_restrito()
	{
		//Pega o controlador e a acao requisitada
		$controller = $this->request->controller();
		$action = $this->request->action();
		//Busca a permissao
		$permissao = ORM::factory('permissao')
			->where('controlador', '=', $controller)
			->and_where('acao', '=', $action)
			->find();
		
		//Permissão existe, verifica se usuário tem permissao
		if($permissao->loaded())
		{
			$usuario = ORM::factory('usuario', $this->usuario['id']);
			if(! $usuario->has('permissoes', $permissao))
			{
				Flash::message('error', 'Você não tem permissão para acessar esse recurso: '.$permissao->descricao);
				$this->request->redirect('calendario/index');
				exit();
			}
		}
	}

} // End Restrito Template
